using System;
namespace ServiceStack.Messaging
{
	public interface IMessageQueueClient : IMessageProducer, IDisposable
	{
		void Publish(string queueName, IMessage message);
		void Notify(string queueName, IMessage message);
		IMessage<T> Get<T>(string queueName, TimeSpan? timeOut = null);
		IMessage<T> GetAsync<T>(string queueName);
		void Ack(IMessage message);
		void Nak(IMessage message, bool requeue, Exception exception = null);
		IMessage<T> CreateMessage<T>(object mqResponse);
		string GetTempQueueName();
	}
}
